//
// Created by Ryan on 2020/11/26.
//

#include "common.h"


// TODO: 汇编指令一点都不能改!!
// 端口写一个字节: 注意!这里的端口, 不只是console噢, 详细的可以看drivers/console.c的
// move_cursor函数内, 往内部寄存器写入内容
inline void write_b (uint16_v port, uint8_v value) {
    asm volatile ("outb %1, %0" : : "dN" (port), "a" (value));
}

// 端口读一个字节
inline uint8_v read_b (uint16_v port) {
    uint8_v ret;
    asm volatile ("inb %1, %0" : "=a" (ret) : "dN" (port));
    return ret;
}

// 端口读一个字(word)
inline uint16_v read_w (uint16_v port) {
    uint16_v ret;
    asm volatile ("inw %1, %0" : "=a" (ret) : "dN" (port));
    return ret;
}
